package main

import (
	"fmt"
	"sync"
)

var wg sync.WaitGroup

func consumer(queue chan int) {
	defer wg.Done()
	for {
		data, ok := <-queue
		if !ok {
			break
		}
		fmt.Println(data, ok)
		queue <- 2
	}
}
func main() {
	//类型 1。有缓冲的 2。无缓冲的
	//双向的还是单向的 为了安全考虑，提供了单向的channel
	var msg chan int
	//var msg <-chan int 定义一个只能输入的channel
	//var msg chan<- int 定义一个只能输入的channel
	msg = make(chan int)
	wg.Add(1)
	go consumer(msg)
	msg <- 1 //将1放入到channel中
	data := <-msg
	fmt.Println("重新取值")
	fmt.Println(data)
	close(msg)
	wg.Wait()

}
